// 接口的声明合并

// interface InfoInter {
//   name: string
// }

// interface InfoInter {
//   age: number
// }

// let infoInter: InfoInter
// infoInter = {
//   name: '胭脂',
//   age: 18,
// }

// 相同的key 必须类型相同
// 函数名相同的函数，成为函数重载
// interface InfoInter {
//   name: string
//   getRes(input: string): number
// }
// interface InfoInter {
//   name: string
//   getRes(input: number): string
// }

// const infoInter: InfoInter = {
//   name: 'yanzi',
//   getRes(text: any): any {
//     if (typeof text === 'string') {
//       return text.length
//     } else {
//       return new String(text)
//     }
//   },
// }

// console.log(infoInter.getRes('23'))
// 命名空间的合并
// namespace Validations {
//   // const numberReg = /^[0-9]+$/
//   export const numberReg = /^[0-9]+$/
//   export const checkNumber = () => {}
// }

// namespace Validations {
//   // console.log(numberReg) // 报错
//   console.log(numberReg)

//   export const checkLetter = () => {}
// }

// 同名的类要定义在同名的命名空间的前面
// 命名空间的内容会作为类的静态属性
// class Validations {
//   constructor() {}
//   public checkType() {}
// }

// namespace Validations {
//   export const numberReg = /^[0-9]+$/
// }

// console.dir(Validations.numberReg)

// 命名空间和函数的合并
// 同名的函数要放在同名的命名空间的前面
// function countUp() {
//   countUp.count++
//   console.log(countUp.count)
// }

// namespace countUp {
//   export let count = 0
// }
// countUp()
// countUp()
// countUp()
// countUp()
// console.dir(countUp)

// 命名空间和枚举的合并 没有先后顺序

// enum Colors {
//   red,
//   green,
//   blue,
// }

// namespace Colors {
//   export const yellow = 3
// }

// console.log(Colors)
